const {
  Mysql,
  addSql,
  xiuSql,
  remSql,
  execute,
  paraphrase,
} = require("../../db/db");
let Mysqlbiao = () => {};
//返回所有商品分类数据
let shopping = async (ctx, next) => {
  let res = await Mysql("classfiy");
  ctx.body = {
    msg: "请求成功",
    code: "01",
    data: paraphrase(res),
  };

  await next();
};
//根据点击的那条分类返回对应商品数据
let getshopping = async (ctx, next) => {
  // 前端传过来的分类id
  let { goods_typeid } = ctx.request.body;
  console.log(ctx.request.body);
  // 根据分类id查找对应商品数据
  let res = await Mysql("goods", { goods_typeid });
  console.log(paraphrase(res));
  ctx.body = {
    msg: "请求成功",
    code: "01",
    data: paraphrase(res),
  };
  await next();
};
//根据前台发送过来的分类页左侧导航的导航id 返回对应数据
let getbanner = async (ctx, next) => {
  // 前端传过来的分类id
  let { type } = ctx.request.body;
  console.log(ctx.request.body);
  // 根据分类id查找对应商品数据
  let res = await Mysql("banners", { type });
  ctx.body = {
    msg: "请求成功",
    code: "01",
    data: paraphrase(res),
  };
  await next();
};
//根据前台发过来的搜索记录 和用户id 把当前用户的搜索记录保存起来
let storeValue = async (ctx, next) => {
  // 前端传过来搜索值 和 用户ID
  let { uid, val, type } = ctx.request.body;
  console.log(ctx.request.body);
  let res = [];
  // 先判断有没有登录
  if (uid) {
    // 判断点击的是不是搜索框
    if (type && type == 1) {
      // 如果点击的搜索框把当前用户的所有历史记录返回
      res = await Mysql("search_records");
      console.log(paraphrase(res));
      ctx.body = {
        msg: "请求成功",
        code: "01",
        data: paraphrase(res),
      };
    } else {
      // // 根据分类id查找对应商品数据
      res = await execute(
        `SELECT * from search_records where uid=${uid} and val='${val}'`
      );
      console.log(paraphrase(res));
      if (paraphrase(res).length) {
        console.log("搜索过");
        // 说明搜索过，不保存当前搜索值导数据库

        // 并返回所有搜索记录
        res = await Mysql("search_records");
        console.log(paraphrase(res));
        ctx.body = {
          msg: "请求成功",
          code: "01",
          data: paraphrase(res),
        };
      } else {
        // 说明没搜索过 ，保存到数据库
        await addSql("search_records", { uid, val });
        // 并返回所有搜索记录
        console.log("没搜索过");
        res = await Mysql("search_records");
        console.log(paraphrase(res));
        ctx.body = {
          msg: "请求成功",
          code: "01",
          data: paraphrase(res),
        };
      }
    }
  } else {
    // 没有登录
    // 判断点击的是不是搜索框
    if (type && type == 2) {
      // 如果是 返回未登录时的所有搜索记录
      res = await Mysql("no_login_records");
      console.log(paraphrase(res));
      ctx.body = {
        msg: "请求成功",
        code: "01",
        data: paraphrase(res),
      };
    } else {
      res = await Mysql(`no_login_records`, { val });
      console.log(paraphrase(res));
      // 判断有没有搜索过
      if (paraphrase(res).length) {
        // 搜索过 直接返回所有数据
        res = await Mysql("no_login_records");
        console.log(paraphrase(res));
        ctx.body = {
          msg: "请求成功",
          code: "01",
          data: paraphrase(res),
        };
      } else {
        // 没搜索过
        // 添加搜索值到数据库
        await addSql("no_login_records", { val });
        // 并返回所有搜索记录
        console.log("没搜索过");
        res = await Mysql("no_login_records");
        console.log(paraphrase(res));
        ctx.body = {
          msg: "请求成功",
          code: "01",
          data: paraphrase(res),
        };
      }
    }
  }

  await next();
};
//点击搜索记录页清空按钮 清空搜索记录
let remove = async (ctx, next) => {
  // 前端传过来的分类id
  let { uid, id } = ctx.request.body;
  console.log(ctx.request.body);
  let res = [];
  // 首先判断有没登录
  if (uid) {
    // 已登录,再判断是清除单个浏览记录,还是清除全部
    if (id) {
      // 清除单个单个
      res = await remSql("search_records", { id });
      // 并重新返回所有历史搜索数据
      res = await Mysql("search_records");
      ctx.body = {
        msg: "请求成功",
        code: "01",
        data: paraphrase(res),
      };
    } else {
      // 清除全部 truncate可以重新设置AUTO_INCREMENT计数器;
      res = execute(`truncate table search_records`);
      // 并重新返回所有历史搜索数据
      res = await Mysql("search_records");
      ctx.body = {
        msg: "请求成功",
        code: "01",
        data: paraphrase(res),
      };
    }
  } else {
    // 未登录,再判断是清除单个浏览记录,还是清除全部
    if (id) {
      // 清除单个单个
      res = await remSql("no_login_records", { id });
      // 并重新返回所有历史搜索数据
      res = await Mysql("no_login_records");
      ctx.body = {
        msg: "请求成功",
        code: "01",
        data: paraphrase(res),
      };
    } else {
      // 清除全部 truncate可以重新设置AUTO_INCREMENT计数器;
      res = execute(`truncate table no_login_records`);
      // 并重新返回所有历史搜索数据
      res = await Mysql("no_login_records");
      ctx.body = {
        msg: "请求成功",
        code: "01",
        data: paraphrase(res),
      };
    }
  }

  await next();
};
//
let search = async (ctx, next) => {
  let { val } = ctx.request.body;
  console.log(ctx.request.body);
  let res = await execute(
    `SELECT * FROM goods WHERE goods_name LIKE '%${val}%'`
  );
  ctx.body = {
    msg: "请求成功",
    code: "01",
    data: paraphrase(res),
  };

  await next();
};
module.exports = {
  shopping,
  getshopping,
  getbanner,
  storeValue,
  remove,
  search,
};
